using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using DataTransferObject;

namespace DataAccess
{
    public class clsCTMuonTraDAO:clsDataAccessHelper
    {
         // Fields
        private String tenTable;

        // Contructors
        public clsCTMuonTraDAO()
        {
            this.tenTable = "CTMUONTRA";
        }
        #region Methods

        //Lấy tổng giá của tất cả các quyển sách thuộc phiếu mượn sách.
        public long TongGiaTatCaSachThuocPhieuMuon(String MaPhieuMuon)
        {
            String sql;
            long TienNoPhieuMuon;
            try
            {
                sql = "SELECT SUM(GIA)";
                sql += " FROM CTMUONTRA C, TUASACH T, SACH S";
                sql += " WHERE C.MAPHIEUMUON LIKE '" + MaPhieuMuon + "'";
                sql += " AND S.MATUASACH=T.MATUASACH";
                sql += " AND C.DKCB=S.DKCB";
                sql += " GROUP BY C.MAPHIEUMUON";
                TienNoPhieuMuon = this.ExecuteScalar(sql);

                return TienNoPhieuMuon;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        //Lấy tiền phạt của tất cả các CT mượn sách của độc giả.
        public long LayTienNoTatCac_CT_PhieuMuonSach(String MaPhieuMuon)
        {
            String sql;
            long TienNoPhieuMuon;
            try
            {
                sql = "SELECT SUM(TIENPHAT)";
                sql += " FROM CTMUONTRA C";
                sql += " WHERE C.MAPHIEUMUON LIKE '" + MaPhieuMuon + "'";
                sql += " GROUP BY C.MAPHIEUMUON";
                TienNoPhieuMuon = this.ExecuteScalar(sql);

                return TienNoPhieuMuon;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        //-------------------------------------Lấy dữ liệu bảng Chi Tiết Mượn trả-----------------------

        public bool UpdateDaTra(clsCTMuonTraDTO chitietmuontra)
        {
            String sql;
            bool check = false;

            try
            {
                sql = "Set dateformat dmy UPDATE " + this.tenTable;
                sql += " SET";
                sql += " NGAYTRA = '";
                sql += chitietmuontra.NgayTra.Day + "/" + chitietmuontra.NgayTra.Month + "/" + chitietmuontra.NgayTra.Year + "',";
                sql += " TIENPHAT = '";
                sql += chitietmuontra.TienPhat + "',";
                sql += " SONGAYMUON = '";
                sql += chitietmuontra.SoNgayMuon + "',";
                sql += " TRANGTHAIMT = N'Đã Trả'";
                sql += " WHERE DKCB LIKE '";
                sql += chitietmuontra.MaSach + "'";
                sql += " AND MAPHIEUMUON LIKE '" + chitietmuontra.MaPhieuMuon + "'";
                check = this.ExecuteNonQuery(sql);

                return check;
            }
            catch
            {
                return check;
            }
        }
        //-------------------------------------Lấy dữ liệu bảng Chi Tiết Mượn trả-----------------------

        public DataTable SelectAll()
        {
            String sql;
            DataTable dt;
            try
            {
                sql = "SELECT * FROM " + this.tenTable;
                dt = new DataTable();
                dt = this.ExecuteQuery(sql);

                return dt;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable LayThongKeSachMuonTheoThang(int thang)
        {
            string sql;
            DataTable tbl;
            try
            {
                sql = "select Count(CTMuonTra.DKCB)as SoLuotMuon,TenTL FROM PMuonSach,CTMuonTra,Sach,TuaSach,TheLoai where PMuonSach.MaPhieuMuon=CTMuonTra.MaPhieuMuon and CTMuonTra.DKCB=Sach.DKCB and Sach.MaTuaSach=TuaSach.MaTuaSach and TuaSach.MaTL=TheLoai.MaTL and Month(NgayMuon)='" + thang + "' group by TenTL";
                tbl = new DataTable();
                tbl = this.ExecuteQuery(sql);
                return tbl;
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        public DataTable LayttQuyenSachBatDauTra()
        {
            string sql;
            DataTable tbl;
            try
            {
                sql ="select CTMuonTra.DKCB,TenTuaSach,NgayMuon,NgayHetHanS,TienDatCoc,Gia,TrangThaiMT from LoaiDG,DocGia,PMuonSach,CTMuonTra,Sach,TuaSach where LoaiDG.MaLDG=DocGia.MaLDg and DocGia.MaThe=PMuonSach.MaThe and PMuonSach.MaPhieuMuon=CTMuonTra.MaPhieuMuon and Sach.DKCB=CTMuonTra.DKCB and Sach.MaTuaSach=TuaSach.MaTuaSach";
                tbl = new DataTable();
                tbl = this.ExecuteQuery(sql);
                return tbl;
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        //-----------------------------------------------------------------------------//

        //-------------------------------------Thêm vào bảng Chi Tiết Mượn Trả-----------------------

        public bool Insert(clsCTMuonTraDTO chitietmuontra)
        {
            String sql;
            bool check = false;

            try
            {
                sql = "Set dateformat dmy INSERT INTO " + this.tenTable;
                sql += " values('";
                sql += chitietmuontra.MaSach + "','";
                sql += chitietmuontra.MaPhieuMuon + "','";
                sql += chitietmuontra.NgayTra + "','";
                sql += chitietmuontra.TienPhat + "','";
                sql += chitietmuontra.SoNgayMuon + "',N'";
                sql += chitietmuontra.TrangThaiMT + "')";
                
                check = this.ExecuteNonQuery(sql);

                return check;
            }
            catch
            {
                return check;
            }
        }

        //-----------------------------------------------------------------------------//

        //-------------------------------------Xóa vào bảng Chi Tiết Mượn Trả-----------------------
        public bool Delete(clsCTMuonTraDTO chitietmuontra)
        {
            String sql;
            bool check = false;

            try
            {
                sql = "DELETE ";
                sql += " FROM " + this.tenTable;
                sql += " WHERE DKCB LIKE '" + chitietmuontra.MaSach + "'";
                sql += " AND MAPHIEUMUON LIKE '" + chitietmuontra.MaPhieuMuon + "'";
                check = this.ExecuteNonQuery(sql);

                return check;
            }
            catch
            {
                return check;
            }
        }
        //-----------------------------------------------------------------------------//

        //-------------------------------------Sửa vào bảng Chi Tiết Mượn Trả-----------------------

        public bool Update(clsCTMuonTraDTO chitietmuontra)
        {
            String sql;
            bool check = false;

            try
            {
                sql = "Set dateformat dmy UPDATE " + this.tenTable;
                sql += " SET";
                sql += " NGAYTRA = '";
                sql += chitietmuontra.NgayTra + "',";
                sql += " TIENPHAT = '";
                sql += chitietmuontra.TienPhat + "',";
                sql += " SONGAYMUON = '";
                sql += chitietmuontra.SoNgayMuon + "',";
                sql += " TRANGTHAIMUONTRA = '";
                sql += chitietmuontra.TrangThaiMT + "'";
                sql += " WHERE DKCB LIKE '";
                sql += chitietmuontra.MaSach + "'";
                sql += " AND MAPHIEUMUON LIKE '";
                sql += chitietmuontra.MaPhieuMuon + "'";
                check = this.ExecuteNonQuery(sql);

                return check;
            }
            catch
            {
                return check;
            }
        }
        //-----------------------------------------------------------------------------//


        #endregion
    }
}
